CloudWatch Logs설치하여 EC2의 로그를 저장하기
소개
안녕하세요! 클래스메소드 금상원 입니다. 이번 블로그에서는 CloudWatch Logs설치하여 EC2의 로그를 저장해보도록 하겠습니다.
CloudWatch Logs란?
Amazon EC2 인스턴스, AWS CloudTrail, Route 53 및 다른 원본에서 시스템, 애플리케이션 및 사용자 지정 로그 파일을 모니터링, 저장 및 액세스할 수 있습니다.
확장성이 뛰어난 단일 서비스에서 사용하는 모든 시스템, 애플리케이션 및 AWS 서비스에서 로그를 중앙 집중화 하며 로그를 쉽게 보거나 특정 오류 코드 또는 패턴이 있는지 검색하고, 특정 필드를 기반으로 필터링 하여 향후 분석을 위해 안전하게 보관할 수 있습니다.
기능에 대해서
- 로그 데이터 쿼리
- Amazon EC2 인스턴스에서 로그 모니터링
- AWS CloudTrail 기록 이벤트 모니터링
- 로그 보존
- 로그 데이터 아카이브
- Route 53 DNS 쿼리 로그
요금에 대해서
EC2인스턴스에 CloudWatch Logs를 설치하고 저장해보기
사전준비
- VPC x1
- Public Subnet x1
- Public Routing Table x1
- InternetGateway x1
- EC2 (Apache 등 미들웨어 설치) x1
- IAM Role (Policy : CloudWatchAgentServerPolicy) x1
EC2인스턴에서 CloudWatch Logs 설치
로그를 내보내기 위해 CloudWatch Logs를 설치 해보도록 하겠습니다.
sudo su -
먼저 루트 유저로 변경해줍니다.
sudo yum update -y
yum을 업데이트 해줍니다.
sudo yum install -y awslogs
CloudWatch Agent를 설치해줍니다.
로그 내보내기 설정
설치가 정상적으로 완료가 되었다면 아래의 설정을 통해 원하는 로그를 내보내도록 하겠습니다.
/etc/awslogs/awslogs.conf
위의 경로 에서 「awslogs.conf」 의 파일을 편집합니다. 편집 명령어는 vi awslogs.conf
입니다.
[/var/log/httpd/access_log] datetime_format = %d/%b/%Y:%H:%M:%S %z file = /var/log/httpd/access_log buffer_duration = 60000 log_stream_name = {instance_id} initial_position = start_of_file log_group_name = /var/log/httpd/access_log [/var/log/httpd/error_log] datetime_format = %d/%b/%Y:%H:%M:%S %z file = /var/log/httpd/error_log buffer_duration = 60000 log_stream_name = {instance_id} initial_position = start_of_file log_group_name = /var/log/httpd/error_log
위의 코드를 추가 해주시면 됩니다. (Apache의 로그를 내보내고 있습니다.)
위의 코드에 대해 간단히 설명 하자면
- datetime_format : 타임스탬프가 로그에서 추출되는 방법을 지정합니다.
- file : CloudWatch Logs에 푸시하고 싶은 로그 파일을 지정합니다.
- buffer_duration : 로그 이벤트를 일괄 처리하는 기간을 지정합니다.
- log_stream_name : 대상 로그 스트림을 지정합니다.
- initial_position : 데이터 읽기를 시작할 지점을 지정합니다.
- log_group_name : 대상 로그 그룹을 지정합니다.
자세한 내용은 아래의 링크에서 확인해 주세요.
/etc/awslogs/awscli.conf
위의 경로에서 「awscli.conf」의 [default] 아래의 region 을 변경하여 로그가 저장되는 리젼을 변경 해줍니다. 편집 명령어는 vi awscli.conf
입니다.
(! 기본적으로 us-east-1 로 되어있기 때문에 로그의 저장소가 버지니아 북부로 설정 되어 있습니다.)
logging 활성화 해보기
위의 설정이 왼료되었으면 다시 home/ec2-user
로 이동합니다.
「Amazon Linux2가 아닌경우」
sudo service awslogs start
sudo chkconfig awslogs on
「Amazon Linux2인 경우」
sudo systemctl start awslogsd
sudo systemctl enable awslogsd.service
위의 명령어들을 시작하여 logging을 활성화 해줍니다.
로그가 잘 들어 왔는지 확인하기 위해 서비스에 「CloudWatch」 를 검색한후 「로그 그룹」 탭 에서 각각의 로그를 확인 해주세요.
- /var/log/messages
- /var/log/httpd/access_log
- /var/log/httpd/error_log
마무리
이번 블로그에서는 CloudWatch Logs를 설치하여 EC2의 로그를 저장해보았습니다. 평소에 EC2의 로그를 수집하고 싶으신 분들께 조금이나마 도움이 되었으면 좋겠습니다.
참고 자료
본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !